$product = DB::connection('cache_mysql_db')->select('select * fomr product');
php artisan make:migration create_product_table
* 旗標 --create: 設定 migration 要操作的資料表
* 旗標 --table: 常在要新增欄位或修改欄位屬性時, 給予指定的資料表名稱
# 到建立好的 2022_08_20_000000_create_product.table.php 檔案內
# Blueprint 類別提供各種欄位建立的方法
Schema::create('product', function (Blueprint $table) {
// ...執行建立資料
$table->string('name', 255);
$table->timestamp('start_date');
// ...
});
Schema::create('product', function (Blueprint $table) {
// ...執行建立資料
// 設定商品名稱為唯一直
$table->string('name', 255)->unique();
$table->timestamp('start_date');
// 設定欄位 modify_date 在欄位 start_date 之後
$table->timestamp('modify_date')->after('start_date);
// ...
});
Schema::dropIfExists('product');
Schema::tabel('product', function(Blueprint $table){
# 修改欄位長度
$table->string('name', 100)->change();
# 修改欄位名稱
$table->renameColumn('cloumn1', 'cloumn_1');
# 移除欄位
# 在 down() 裡面應須新增欄位
$table->dropColumn('votes');
});
# 新建單一主鍵
$table->primary('p_id');
# 新建複合組鍵
$table->primary(['p_id', 'p_num']);
# 新增獨一無二索引
$table->unique('email');
# 新增複合獨一無二索引
$table->unique('email', 'custom_name');
# 新增基本索引
$table->index('account');
# 新增複合基本索引
$table->index('account', 'account_mail');
$table->dropPrimary('p_id');
$table->dropUnique('email');
$table->dropIndex('account');
# 新增外鍵
$table->foreign('category_id')->reference('id')->on('categoty');
# 移除外鍵
$table->foreign('categoru_id')->reference('id')->onDelete('category');
php artisan migration
* 執行後會檢查之前 migration 紀錄, 將執行新建的 migration 檔案
* 有其他選項 refresh、fresh、rollback 等操作回復資料庫
php artisan make:seeder ProductsTableSeeder
public function run(){
$this->call(ProductsTableSeeder::class);
# 使用靜態介面
DB::table('product')->insert([
// ...
]);
}
model 工廠
# 使用 Eloquent 名稱
$factory->define(Product::class, function(Faker\Generator $faker) {
return [
'name' => $faker->name
];
}
# 使用自訂名稱
$factory->define('product', function(Faker\Generator $faker) {
return [
'name' => $faker->name
];
}
5.4 之前 model 工廠都要在 database/factories/ModelFactory.php 建立
5.5 之後可在自己的 Class 定義
php artisan make:factory ProductFactory
# 建立多筆資料
$product = factory(Product::class, 20)->create();
factory(Product::class, 20)->create()->each(function($product) use ($post) {
$post->comments()->save(factory(Comment::class)->make(
[
'user_id' => $u->id
]
);
}
# 使用原始 SQL
DB::statement('select * from product');
# 原始 select
DB::selete('select * from product');
# PDO 資料綁定
DB::select('select * from product where category = ?'. [2]);
# insert
DB::insert('insert into product ('name', 'price') values (?, ?)', [
'test', '100'
]);